
#pragma once

#include <boost/function.hpp>
#include <boost/shared_ptr.hpp>

#include <ConnectionBroker/Application.h>
#include <ConnectionBroker/Typedefs.h>

namespace ConnectionBroker
{
   class Channel
   {
      protected: //Member variables
      std::string mChannelName;
      uint32_t mChannelNumber;
      applicationCallback mChannelCallback;

      public: //Constructor, destructor
      Channel(const std::string& channelName,
              const uint32_t channelNumber, 
             applicationCallback pChannelCallback = NULL
            );

      virtual ~Channel();

      public: //Getters
      applicationCallback channelCallback() const { return mChannelCallback; }
      const std::string& channelName() const { return mChannelName; }
      const uint32_t channelNumber() const { return mChannelNumber; }
   };
}

